package com.hippo.liteflow.component.nodeComponent;

import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.core.NodeComponent;
import lombok.extern.slf4j.Slf4j;


/**
 * @ClassName BCmp
 * @Description TODO 组件B
 * @Author tangxl
 * @create 2023-03-30 16:37
 **/
@Slf4j
@LiteflowComponent("b")
public class BCmp extends NodeComponent {
    /**
     * 业务逻辑处理
     * @throws Exception
     */
    @Override
    public void process() throws Exception {
        log.info("我是B,我执行业务了");
        this.setIsEnd(true);
        log.info("B-->isContinueOnError:{}" , isContinueOnError());
    }

    /**
     * 业务逻辑处理成功后的回调
     * @return
     */
    @Override
    public boolean isContinueOnError() {
        log.info("B执行失败了,但我要继续执行C");
        this.setIsEnd(false);
        return true;
    }

    /**
     * 业务逻辑处理失败后的回调
     * @throws Exception
     */
    @Override
    public void onError() throws Exception {
        log.error("B执行失败");
        // onError方法本身抛错，那么最终抛到最外面的错，是主方法里的错
        throw new Exception("B执行失败");
    }

}
